Skip to content

chore(deps): bump actions/checkout from 4 to 6#4

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/checkout-6
Closed

chore(deps): bump actions/checkout from 4 to 6#4
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/checkout-6

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github May 20, 2026

Bumps actions/checkout from 4 to 6.

Release notes

Sourced from actions/checkout's releases.

v6.0.0

What's Changed

Full Changelog: actions/checkout@v5.0.0...v6.0.0

v6-beta

What's Changed

Updated persist-credentials to store the credentials under $RUNNER_TEMP instead of directly in the local git config.

This requires a minimum Actions Runner version of v2.329.0 to access the persisted credentials for Docker container action scenarios.

v5.0.1

What's Changed

Full Changelog: actions/checkout@v5...v5.0.1

v5.0.0

What's Changed

⚠️ Minimum Compatible Runner Version

v2.327.1
Release Notes

Make sure your runner is updated to this version or newer to use this release.

Full Changelog: actions/checkout@v4...v5.0.0

v4.3.1

What's Changed

Full Changelog: actions/checkout@v4...v4.3.1

v4.3.0

What's Changed

... (truncated)

Changelog

Sourced from actions/checkout's changelog.

Changelog

v6.0.2

v6.0.1

v6.0.0

v5.0.1

v5.0.0

v4.3.1

v4.3.0

v4.2.2

v4.2.1

v4.2.0

v4.1.7

v4.1.6

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github May 20, 2026

Labels

The following labels could not be found: actions, dependencies. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@dependabot dependabot Bot requested a review from jkindrix as a code owner May 20, 2026 18:25
@jkindrix
Copy link
Copy Markdown
Owner

Superseded by d9b1ff4 — all four GitHub Actions bumps landed together as a single commit on main after verifying each against gh api repos/<owner>/<repo>/releases/latest. Closing.

@jkindrix jkindrix closed this May 20, 2026
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github May 20, 2026

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot Bot deleted the dependabot/github_actions/actions/checkout-6 branch May 20, 2026 18:32
jkindrix added a commit that referenced this pull request May 20, 2026
Adds the regression-gate workflow + actual stable benchmarks to back
it. Previously the benchmarks/ project only contained the one-shot
pre-impl spike harnesses; the v1.0 DoD also requires CI-runnable
benchmarks with a regression threshold.

New benchmarks (benchmarks/NetXlsx.Benchmarks/Benchmarks.cs):
- WriteBenchmarks.ColdCreateAndSave — OPC packaging cost.
  Design §5 target: < 50ms.
- WriteBenchmarks.Write5kRows — in-memory mixed-type write
  (proxy for the 30k-rows-in-memory §5 target).
- WriteBenchmarks.StyledWrite_SmallPalette — CellStylePool dedup
  path (decision #4 / spike 1). 10k cells × 5 distinct styles.
  Design §5 target: > 500k styled cells/s.
- WriteBenchmarks.StreamingWrite_50kRows — SXSSF streaming path
  (proxy for the 1M-rows-streaming §5 target).
- ReadBenchmarks.OpenAndReadColumnSum — open + read 1k rows.

All use ShortRun config (3 warmup × 3 iterations) so the full suite
completes in ~45s on a modern laptop.

New tooling (benchmarks/compare-bench.py):
- Reads BDN's brief-JSON output.
- Compares per-benchmark Statistics.Mean against a baseline.
- Exits 1 if any benchmark regresses > threshold (default 15%,
  configurable via --threshold).
- Reports improvements informationally but never fails on them.
- Tolerates missing baseline (first run) and reports new/removed
  benchmarks.

New workflow (.github/workflows/bench.yml):
- Triggers on PRs and pushes touching src/, benchmarks/, or
  Directory.{Build,Packages}.props.
- Caches a CI-hardware baseline keyed by hash of the source tree.
  Main pushes refresh the cache; PRs read it.
- Runs the comparator with a 15% threshold (10% design DoD + 5%
  CI noise headroom).
- Uploads results + baseline as artifacts for every run.

Two-baseline model documented in benchmarks/README.md:
- benchmarks/baseline/ — committed; dev-local reference for the
  "did my change regress on my machine" pre-PR check. Captured on
  a 12th-gen i9-12900 (fast hw, intentionally not the CI baseline).
- CI cache — managed by the bench workflow; tied to GH Actions
  ubuntu-latest hw. The actual regression gate. Refreshed on every
  main push that touches a tracked path.

The threshold sits at 15% (vs design's 10% DoD) because
short-run BDN measurements on CI runners have higher variance than
full statistical runs. Tighten back to 10% once we have a few
months of CI-baseline data to calibrate against.

Validation: local run produces 5 benchmarks (4 write + 1 read) in
~45s; comparator against the just-stored baseline correctly reports
0 regressions, 0 improvements, 5 unchanged.
jkindrix added a commit that referenced this pull request May 22, 2026
Adds multi-run formatted-string support to random-access cells. New
public value records mirror the CellStyle conventions (immutable,
structural equality, nullable-axis "inherit existing" semantics):

  - RichText            — sequence of one or more RichTextRun
  - RichTextRun         — (Text, RichTextStyle) pair
  - RichTextStyle       — font-only subset of CellStyle

Per-run style is restricted to font axes (Bold, Italic, Underline,
FontName, FontSize, Color). Excel's OOXML <r><rPr> element does not
honor per-run fills, borders, alignment, or number format — exposing
the full CellStyle on a run would silently drop those axes. Cell-level
visual style continues through ICell.Style(CellStyle).

Run fonts are pooled through the existing CellStylePool font cache
(decision #4) — runs with identical font properties share one IFont
across the workbook.

GetRichText() returns non-null only when the cell carries explicit
formatting runs (NumFormattingRuns > 0). A cell set via SetString
returns null even though NPOI stores every string cell as an
XSSFRichTextString internally.

IStreamingCell.SetRichText is intentionally absent. NPOI's SXSSF
SheetDataWriter (NPOI 2.7.x) reconstructs a fresh XSSFRichTextString
from cell.StringCellValue at flush time, dropping all in-memory
formatting runs. Per decision #7 (streaming type-honesty), the
absence of the method mirrors the absence of the capability rather
than silently degrading or throwing on call. Surfaced during impl by
a streaming round-trip test; documented in implementation-notes.md.

Surface (30 entries added to PublicAPI.Unshipped.txt):
  - NetXlsx.RichText (+ Runs, PlainText, ctors, structural equality)
  - NetXlsx.RichTextRun (+ Text, Style)
  - NetXlsx.RichTextStyle (+ Bold, Italic, Underline, FontName,
                            FontSize, Color, Default)
  - ICell.SetRichText(RichText)
  - ICell.GetRichText() -> RichText?

Tests (14 new in tests/NetXlsx.Tests/RichTextApiTests.cs):
  - value-type semantics (defaults, equality, validation)
  - in-memory round-trip (SetRichText → GetRichText)
  - file round-trip via Workbook.Open
  - GetRichText returns null for plain strings + non-string cells
  - MaxCellTextLength enforcement on concatenated plain text
  - Zero-length runs contribute no formatting
  - IStreamingCell type-honesty: reflection asserts no SetRichText

Public-API snapshot + DisposedWorkbookMatrix updated.

Design row I-50 added in docs/design.md §6.8.1 with rationale and the
SXSSF streaming caveat. Implementation-notes entry captures the SXSSF
serializer limitation, the font-only design choice, and the read-side
"rich vs plain" discriminator.

First slice of the v1.1 roadmap (rich text → tables → images →
protection → validation → autofilter → named styles → custom
converters → strict concurrency).
jkindrix added a commit that referenced this pull request May 22, 2026
Adds a workbook-scoped name registry for CellStyle values.
Register once with a name; apply by name on cells or ranges.

Public surface (~6 PublicAPI.Unshipped entries):
  - IWorkbook.RegisterStyle(name, CellStyle)
  - IWorkbook.GetRegisteredStyle(name)  // null if unknown
  - IWorkbook.RegisteredStyleNames
  - ICell.ApplyNamedStyle(name)
  - IRange.ApplyNamedStyle(name)

Names are case-insensitive. Re-registering an existing name
replaces the definition. ApplyNamedStyle throws ArgumentException
with a friendly message ("No style is registered under 'X'. Use
IWorkbook.RegisterStyle before referencing the name.") when the
name is unknown — distinct from passing a null reference.

Backed by the existing style-pool dedup (decision #4) — equal
CellStyle values still share one underlying NPOI ICellStyle, so
naming is purely a caller-side convenience.

v1.1 named styles are an in-process convenience, NOT OOXML
named-style table entries. When a workbook is saved and reopened
via Workbook.Open, the per-cell visual style is preserved (via
style-pool dedup), but the name -> style map is not rehydrated —
Excel itself never saw the names. Real OOXML named-style table
integration (so styles persist by name across open/save) is
deferred to v1.2.

Coverage (+13 unit tests in tests/NetXlsx.Tests/NamedStyleTests.cs):
  - Empty registry by default
  - Register + get round-trip
  - Case-insensitive lookup ("Header", "header", "HEADER" all match)
  - GetRegisteredStyle returns null for unknown name
  - RegisterStyle replaces existing
  - RegisteredStyleNames enumerates all
  - Reject null name, empty name, null style
  - ICell.ApplyNamedStyle sets the cell's style
  - ICell.ApplyNamedStyle throws ArgumentException for unknown name
  - IRange.ApplyNamedStyle sets every cell in the range
  - IRange.ApplyNamedStyle throws ArgumentException for unknown name

Disposed-workbook matrix updated for the three IWorkbook members
+ the ICell + IRange ApplyNamedStyle methods.

Decision I-57 added to docs/design.md §6.2.2.
jkindrix added a commit that referenced this pull request May 22, 2026
Closes the v1.0 external-review recommendation #4 ("commit a date
for NPOI 3.x evaluation or kick off v2 OOXML R&D in earnest").

The date commitment already exists — Spike 4-Q (NPOI AOT/trim
re-check) and Spike 5-Q (NPOI OSMF posture re-check) in
docs/scheduled-spikes.md are due 2026-08-16. What was missing
was a v1.1-completion checkpoint confirming the cadence holds
and recording the additional signal v1.1 produced.

Added entries:

docs/scheduled-spikes.md:
  - Spike 4-Q table: 2026-05-22 row (no re-test, cadence holds).
  - Spike 5-Q table: 2026-05-22 row noting the three NPOI-2.7.3
    surprises v1.1 had to work around (XSSFTable.CreateColumn
    broken on fresh tables, ProtectSheet(null) means unprotect,
    XSSFSheet.RemoveTable absent). Verdict: hold pin; cadence
    holds; next re-assess 2026-08-16.

docs/v2-ooxml-planning.md:
  - Status section gains a 2026-05-22 checkpoint summarizing the
    v1.1 NPOI-surprise count as additional signal in favor of
    evaluating alternatives when the upstream gates fire.
  - Next-milestone language tightens: the August spike re-checks
    are the explicit gating event for whether R&D-1 parallel
    spikes start.

No code changes. No design row needed (these are operational
schedule artifacts, not surface decisions).
jkindrix added a commit that referenced this pull request Jun 1, 2026
Model xl/styles.xml on the SDK engine via a new OoxmlStylePool that dedups
CellStyle values to a single cellXfs index (decision #4) and emits OOXML
schema types (font/fill/border/numFmt/xf) directly. Wires the styling
surface end to end:

- ICell.Style (merge: non-null axes overlay, null inherit), NumberFormat,
  GetStyle, ApplyNamedStyle; IRange.Apply/ApplyNamedStyle (dense);
  IColumn.Width/WidthUnits/Hidden/SetDefaultStyle/ForEachPopulated;
  IRow.HeightInPoints/Hidden; IWorkbook style-pool diagnostics + in-memory
  named-style registry.
- Unblocks the deferred date/time setters: SetDate (DateTime/DateOnly) /
  SetTime / SetDuration write the Excel serial and apply the workbook's
  default date/time/duration number format when the cell is unstyled
  (I-18/I-19, §7.9). GetDate/GetDateOnly and Kind==Date detect date number
  formats (builtin ids 14-22/45-47 plus custom date-token codes). The
  1900/1904 epochs are honored, including Excel's 1900-02-29 leap bug.
- Applies WorkbookOptions.DefaultFontName/Size to font index 0 on
  CreateOoxml and DateSystem.Excel1904 to workbookPr/@date1904. OpenOoxml
  adopts the file's stylesheet and default font untouched (lessons #8/#9).

Stays within the parallel-engine rules: only Internal/Ooxml*.cs and the
isolated NetXlsx.OoxmlEngine.Tests are touched; the NPOI engine and the
existing suite are unchanged. OoxmlEngine.Tests: 30 -> 52, green on
net8.0 + net10.0.
jkindrix added a commit that referenced this pull request Jun 1, 2026
…-82)

Implements the first half of the sheet/workbook structural surface on the
SDK engine (the slice is split across sessions; panes/visibility/tab color/
protection/grouping follow).

Merges (OoxmlSheet.Merges.cs): <mergeCells> written after <sheetData> in the
worksheet's strict child order; container dropped (not left childless) when the
last region is removed; @count kept in sync. Matches the NPOI engine contract —
1x1 no-op (I-38), overlap throws InvalidOperationException (sec 6.4), non-exact
unmerge is a silent no-op, MergedRanges canonical A1:C3, and MergeCellsStyled
styles every cell before merging so boundary-cell borders render (lesson #4).

Named ranges (OoxmlWorkbook.Names.cs + OoxmlNamedRange.cs): stored as
<definedNames> in workbook.xml between <sheets> and <calcPr>; sheet scope
round-trips via localSheetId. Leading '=' stripped; names unique workbook-wide
case-insensitively regardless of scope; Excel name rules validated in-engine
(the SDK has no built-in validator).

No public symbol added — all are existing interface members newly implemented
internally, so the PublicAPI snapshot is unchanged. Both fixture families added
to the schema-validation gate (clean under Microsoft365). Cross-checked against
the NPOI-engine FreezeMergeHiddenTests (merge half) and NamedRangeApiTests —
every assertion is satisfied, de-risking this surface's cutover.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant